import math

"""第31题：山峰的个数
题目描述：十一假期,小P出去爬山,爬山的过程中每隔10米他都会记录当前点的海拔高度(以一个浮点数表示),
这些值序列保存在一个由浮点数组成的列表h中。回到家中，小P想研究一下自己经过了几个山峰，请你帮他计算一下，输出结果。
例如：h=[0.9,1.2,1.22,1.1,1.6,0.99], 将这些高度顺序连线，会发现有两个山峰，故输出一个2(序列两端不算山峰)示例：输入：h = [0.9, 1.2, 1.22, 1.1, 1.6, 0.99]
输出：2"""
#h=[0.9,1.2,1.22,1.1,1.6,0.99]
#count = 0
#for i in range(1,len(h)-1):
#    if h[i] < h[i+1] and h[i+1] > h[i+2]:
#        count += 1
#print(count)
"""题目32：三角形形状
描述：给以一个三角形的三边长a,b和c(边长是浮点数),请你判断三角形的形状。
若是锐角三角形，输出R,
若是直角三角形，输出Z，
若是钝角三角形，输出D，
若三边长不能构成三角形，输出W."""
#a = float(input("a: "))
#b = float(input("b: "))
#c = float(input("c: "))
#da = a*a
#db = b*b
#dc = c*c
#dm = max([da,db,dc])
#op = da+db+dc-dm
#if (a+b<= c) or (b+c<=a) or (a+c<=b):
#    print("W")
#else:
#    if dm==op:
#        print ('Z')
#    elif dm>op:
#        print ('D')
#    else:
#        print ('R')
"""题目33：大幂次运算
题目描述：给你两个正整数a(0 示例：输入：a = 3453
n = 0
输出：1"""
#a=2
#n=3
#print(pow(a,n))
"""pow(x,y)
返回（x的y次方）的值。"""
"""第34题：密码生成(buhui,budong)
题目描述：生活在当代社会，我们要记住很多密码，银行卡，qq，人人，微博，邮箱等等。小P经过一番思索之后，发明了下面这种生成密码方法：给定两个正整数a和b, 利用a / b我们会得到一个长度无限的小数(若a / b不是无限小数，比如1/2=0.5,我们认为0.5是0.5000000...，同样将其看做无限长的小数），小P将该小数点后第x位到第y位的数字当做密码，这样，无论密码有多长，小P只要记住a,b,x,y四个数字就可以了，牢记密码再也不是那么困难的事情了。现在告诉你a,b,x,y（0 示例：输入：a = 1
b = 2
x = 1
y = 4
输出：5000"""
"""题目35：最大连续子序列(非常重要！！！）
描述：给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个连续子序列，使其和最大，输出最大子序列的和。
例如，对于L=[2,-3,3,50]， 输出53（分析：很明显，该列表最大连续子序列为[3,50])."""
"""方法一:穷举法"""
#L=[2,-3,3,50]
#a=[]
#for i in range(len(L)):
#    sum= 0
#    for j in range(i,len(L)):
#        sum+=L[j]
#        a.append(sum)
#print(a)
#print(max(a))
"""方法二：优化穷举"""
#L=[2,-3,3,50]
#maxx = 0
#for i in range(len(L)):
#    now = 0
#    for j in range(i,len(L)):
#        now += L[j]
#        if now > maxx:
#            maxx = now
#print(maxx)
"""动态规划(最优)"""
#L=[2,-3,3,50]
#max_sum = L[0]
#cur_sum = L[0]
#for i in range(1,len(L)):
#    if cur_sum < 0:
#        cur_sum = L[i]
#    else:
#        cur_sum += L[i]
#    if cur_sum > max_sum:
#        max_sum = cur_sum
#print(max_sum)
"""第36题：最大非连续子序列(bihui,budong)(haishizuibulai)(动态规划题）
题目描述：给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个非连续子序列，使其和最大，输出最大子序列的和。
这里非连续子序列的定义是，子序列中任意相邻的两个数在原序列里都不相邻。
例如，对于L=[2,-3,3,50]， 输出52（分析：很明显，该列表最大非连续子序列为[2,50]).示例：输入：L = [2, -3, 3, 50]
输出：52"""
#L=[2,-3,3,50]
#L.insert(0, 0)
#for i in range(2,len(L)):
#        L[i] += max(L[:i - 1])
#print(max(L))
"""思路：先插入L[0]=0为基准，从第三个数字左向右扫描，把每个数都更新为加上其上一个数之前的最大值。
如L = [2, -3, 3, 50]，插入得到L = [0, 2, -3, 3, 50]。
-3变成-3+（2之前的最大值=0）=-3，L = [0, 2, -3, 3, 50]
3变成3+（-3之前的最大值=2）=5，L = [0, 2, -3, 5, 50]
50变成50+（5之前的最大值=2）=52，L = [0, 2, -3, 5, 52]
最后输出L的最大值即可。"""




"""第37题：简单题之勾股定理
题目描述：给你直角三角形的两个直角边的边长a,b,请你求出其斜边边长，结果保留小数点后三位小数。
如a=3, b =4, 则输出5.000。示例：输入：a = 3.0
b = 4.0
输出：5.000"""
#a=3
#b=4
#c=float(math.sqrt(a**2+b**2))
#print("%.3f" %c)
"""Python保留指定位数的小数
1 ’%.2f’ %f 方法(推荐)
f = 1.23456
print('%.4f' % f)
print('%.3f' % f)
print('%.2f' % f)
结果：
1.2346
1.235
1.23
这个方法会进行四舍五入
2 format函数(推荐)
print(format(1.23456, '.2f'))
print(format(1.23456, '.3f'))
print(format(1.23456, '.4f'))
这个方法会进行四舍五入"""
"""第38题：简单题之列表转换
题目描述：给你一个字符串列表L，请用一行代码将列表所有元素拼接成一个字符串并输出。
如L=['abc','d','efg'], 则输出abcdefg。示例：输入：L = ["abc", "d", "efg"]
输出：abcdefg"""
#L=['abc','d','efg']
#for i in L:
#    print(i,end="")
"""第39题：简单题之输出格式练习
题目描述：给你一个字符串列表L，用一行代码顺序输出L中的元素，元素之间以一个空格隔开，注意行尾不要有空格，输出单独占一行。
如L=['abc','d','efg'], 则输出abc d efg。示例：输入：L = ["abc", "d", "efg"]
输出：abc d efg"""
#L = ["abc", "d", "efg"]
#for i in L:
#    print(i,end=" ")
"""第40题：整数解
题目描述：给你两个整数a和b（-10000<a,b<10000），请你判断是否存在两个整数，他们的和为a，乘积为b。
若存在，输出Yes,否则输出No
例如：a=9,b=15, 此时不存在两个整数满足上述条件，所以应该输出No。示例：输入：a = 9
b = 15
输出：No"""
#a=8
#b=15
#x=0
#flag=0
#while x<a:
#    y=a-x
#    if x*y==b:
#        flag+=1
#        print(f"{x},{y},yes")
#    x+=1
#if flag==0:
#    print("no")








